Graphic User Interface for Cooking Game

ABSTRACT

Methods, systems, and computer programs are presented for presenting Graphical User Interfaces (GUIs) in an online game. In one method, a “throw in the ingredients” animation is performed to place ingredients into a cooking appliance (e.g., a grill). Each time the player clicks on an ingredient, the ingredient goes into the cooking appliance. In one example, the last item has a special flair or a colorful animation indicating that the dish is ready to be cooked. In another interface, the user is given an option by the game to “show me” which teaches the player how to get that ingredient. The interface may also show which friends have the desired ingredient, and if the player clicks one of the friends, a game request is sent to the friend for the needed ingredient.

CLAIM OF PRIORITY

This application claims priority from U.S. Provisional Patent Application No. 61/674,806, filed Jul. 23, 2012, and entitled “GRAPHIC USER INTERFACE FOR COOKING GAME;” U.S. Provisional Patent Application No. 61/674,812, filed Jul. 23, 2012, entitled “REGULAR VISITOR TO FRIEND BOARD IN VIRAL GAME;” and from U.S. Provisional Patent Application No. 61/674,817, filed Jul. 23, 2012, entitled “SERVICES FOR IMPORTANT CUSTOMERS IN ONLINE GAME.” These provisional applications are herein incorporated by reference.

BACKGROUND

1. Field of the Invention

The present embodiments relate to methods for executing games in a distributed environment, and more particularly, methods, systems, and computer programs for performing cooking operations in a cooking game.

2. Description of the Related Art

Online games that allow players to interact with other players have become popular. Some online games, such as chess or bridge, have a small number of players that play together at the same time. Other online games, such as Massively Multiplayer Online (MMO) games, can have a large number of players playing simultaneously. Online game operators, also referred to as social game operators, harness the power of online social networks, to design games that closely integrate the players' social graph data with their existing friendship connections.

Game operators are continuously looking for new ways to improve social interactions to the game and for new game interfaces that provide a realistic experience to players. Players wish to improve their game experience by submerging themselves in the fiction of the game, and the better the experience is, the longer that players will stay in the game and the higher the probability that players invite their friends to play. Improving the way players interact with each other in the game is one way to improve the gaming experience, which differentiates the social game from the one-person game.

It is in this context that embodiments arise.

SUMMARY

Methods, systems, and computer programs are presented for presenting Graphical User Interfaces (GUIs) in an online game. In one method, a “throw in the ingredients” animation is performed to place ingredients into a cooking appliance (e.g., a grill). Each time the player clicks on an ingredient, the ingredient goes into the cooking appliance via a related animation. In one example, a special item is added to the ingredients, and the special item provides a special flair or a colorful animation indicating that the dish is complete and cooking has started. In another interface, the user is given a “show me” option that teaches the player how to get an ingredient. The interface may also show which friends have the desired ingredient, and if the player clicks in one of the friends, an in-game request is sent to the friend for the needed ingredient.

In one embodiment, a method for executing a game is presented. The method includes operations for detecting selection of a cooking operation to create a dish with an appliance, and for presenting ingredients for the dish outside the appliance. For each ingredient, the method includes an operation to wait for a user to select the each ingredient, and an operation for, after the selection, displaying an animation to move the selected ingredient to the appliance. Displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance. The method further includes an operation to start cooking the dish after all ingredients are moved to the appliance. In one embodiment, the operations of the method are executed by a processor.

In another embodiment, a computer program embedded in a non-transitory computer-readable storage medium, when executed by one or more processors, for executing a game, is presented. The computer program includes program instructions for detecting selection of a cooking operation to create a dish with an appliance. Further, the computer program includes program instructions for presenting ingredients for the dish outside the appliance, and program instructions for processing each ingredient including waiting for a user to select the each ingredient and, after the selection, displaying an animation to move the selected ingredient to the appliance. Displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance. Additionally, the computer program further includes program instructions for start cooking the dish after all ingredients are moved to the appliance.

In yet another embodiment, a method for executing a game is presented. The method includes operations for detecting selection of a cooking operation to create a dish with an appliance, and for presenting ingredients for the dish outside the appliance and a finishing touch. For each ingredient, the method includes operations for waiting for a user to select the each ingredient and, after the selection, displaying an animation to move the selected ingredient to the appliance. Displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance. The finishing touch is not available for selection until all ingredients have been selected. The method further includes operations for enabling the selection of the finishing touch after all ingredients have been selected, and for displaying an animation to add the finishing touch to the appliance in response to a selection of the finishing touch by the user. The dish starts cooking after adding the finishing touch. In one embodiment, the operations of the method are executed by a processor.

It should be appreciated that the present embodiments can be implemented in numerous ways, such as a method, an apparatus, a system, a device, or a computer program on a computer readable medium. Several embodiments are described below.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments may best be understood by reference to the following description taken in conjunction with the accompanying drawings.

FIGS. 1A-1C illustrate a Graphical User Interface (GUI) for performing a cooking operation in the game, according to one embodiment.

FIGS. 2A-2E illustrate an animation for adding ingredients to a cooking appliance, according to one embodiment.

FIG. 3 is a flowchart of a method for preparing a dish for cooking, in accordance with one embodiment.

FIGS. 4A-4D illustrate the use of the “Show Me” feature to get ingredients for a dish, according to one embodiment.

FIG. 5 is a flowchart of a method for enabling the user to get ingredients, according to one embodiment.

FIGS. 6A-6D illustrate the operation for visiting a friend in the game to gather ingredients, according to one embodiment.

FIG. 7 illustrates a game bar with a variable number of slots, according to one embodiment.

FIG. 8 is a state diagram describing cooking operations in the game, according to one embodiment.

FIGS. 9A-9G illustrate an interface for adding an expansion to the game, according to one embodiment.

FIG. 10 illustrates the interaction between client and server in an online game, according to one embodiment.

FIG. 11 illustrates an implementation of a Massively Multiplayer Online (MMO) infrastructure, according to one embodiment.

FIG. 12 illustrates an example network environment suitable for implementing embodiments.

FIG. 13 illustrates an example computer system for implementing embodiments.

DETAILED DESCRIPTION

It will be apparent, that the present embodiments may be practiced without some or all of these specific details. In other instances, well known process operations have not been described in detail in order not to unnecessarily obscure the present embodiments.

FIGS. 1A-1C illustrate a Graphical User Interface (GUI) for performing a cooking operation in the game, according to one embodiment. FIGS. 1A-1C show the GUI for the cooking game, which includes a cooking appliance (e.g., a grill), a cooking chef, an avatar that performs operations for the player, and other non-player characters (NPCs), such as a waiter that serves dishes to customers. In addition, there are tables with chairs for the customers. The cooking game also includes other areas, such as a farm where ingredients may be grown, additional cooking stations, expansion areas where ingredients may be obtained (e.g., a bakery), etc.

In one embodiment, progress in the cooking game is made by cooking dishes and serving the dishes to customers. After customers finish eating the dishes, the player gets rewards, such as in-game currency, mastery stars, experience points, etc. The player is also able to expand the game by adding space to the restaurant, buying more cooking appliances, tables, decorations, etc.

FIG. 1A is part of an introductory tutorial to the game where the player is asked to click on the cooking appliance, a grill. After the player clicks on the grill, a new user interface for the grill is presented. Over imposed around the grill are several dishes that can be cooked in this cooking appliance, such as a vegetable kebab, a hamburger, a roast beef sandwich, a grilled sandwich, grilled salmon, etc. In one embodiment, some of the dishes may be given a grey shading to indicate that the player does not have access to these dishes. In addition, each dish has a number of stars, which relate to a mastery level required to cook the dish. The mastery level is a measurement of progress in the game, and as the player achieves higher mastery levels, the player is able to access additional game features, dishes, cooking appliances, decorations, etc.

Once the player selects a dish, the interface presents the ingredients needed to make the dish and, next to each ingredient, two numbers are presented indicating how many of these ingredients the player currently owns, and how many ingredients are needed for cooking this dish. For example, a ratio of 4/1 next to the meat indicates that the player has four pieces of meat to cook with and that only one is needed to make the hamburger. If the player does not have the minimum number of ingredients to make the dish, then the player cannot cook the dish and the player has to perform additional game operations to get the missing ingredients. For example, if the player needs two potatoes but the player only has one potato to make a dish, the ratio would be 1/2, which shows that the player is short one potato. More details are given below on how to get missing ingredients with reference to FIGS. 4A-4E, 6A-6D, 9A-9G, etc.

In one embodiment, the dish also has a preparation time (e.g., 45 seconds, 12 hours, etc.), which is the amount of time needed to cook the dish once cooking starts. In addition, next to the dish some rewards may be shown indicating the prizes to be obtained by the user when the dish is completed, such as how many servings of the dish are available to serve to clients of the restaurant, a mastery start, and some game coins.

If the player owns the ingredients needed to make the dish, a start button is presented to the user to enable the user to start the cooking process. In one embodiment, if the player selects the start button, the player is presented a new user interface to add the ingredients to the cooking appliance, as shown in FIG. 1C.

The ingredients are presented around the cooking appliance, and the ingredients are selectable by the player (e.g., via mouse click or by passing the mouse cursor over the ingredient, referred to herein as a mouse over). In one embodiment, an additional element is presented together with the ingredients. This additional element is also referred to as the finishing touch, the last operation, the flourish, the cooking start, the cooking finishing moves, etc., and is used as the last operation in preparing the dish, after all the other ingredients have already been added to the cooking appliance. In one embodiment, the finishing touch is not selectable until all the ingredients have been added to the cooking appliance. Embodiments described below refer to the finishing touch as being part of the cooking process, but other embodiments may also be implemented without the use of the finishing touch.

FIGS. 2A-2E illustrate an animation for adding ingredients to a cooking appliance, according to one embodiment. As used herein, a “doober” is an item presented to the user after the user clicks on some game element, and as the user clicks or mouses over the doober, the doober is collected and added to the list of assets owned by the player using an animation that takes the doober to some area of the game. For example, a doober may be a coin or extra energy, and as the user mouses over the coin or extra energy symbol, the item is added to the user's inventory together with an animation, such as moving the coin to the coin counter. Other types of animations are also possible to show that the user has collected the item once the user clicks or mouses over the doober.

The animation to add ingredients to the cooking appliance is referred to herein as a “reverse doober” because once the user clicks or mouses over the element, the element is transported to the cooking appliance, or to a cooking container in the cooking appliance. It is sometimes referred to as a “reverse doober,” because a “doober” gives the impression of coming out of a game element (e.g., after the user feeds a cow, doobers appear as rewards), while a reverse doober gives the impression of going into a game element, such as falling into a cooking dish or a cooking appliance.

FIG. 2A shows the user clicking on an ingredient (e.g., a tomato) needed to prepare a dish. In one embodiment, one ingredient may be selected at a time, while the other ingredients are grayed out and unavailable to the player until all the ingredients are added to the cooking appliance. In another embodiment, two or more ingredients available to the user for selection to add to the appliance, because the order of ingredients may not be important, although the finishing touch may not be available until all the other ingredients are added to the appliance.

After the user selects the ingredient, FIG. 2B illustrates the animation that takes place to add the tomato to the grill. The ingredient appears to move from the beginning point towards the cooking appliance, and once the ingredient reaches the cooking appliance, the ingredient disappears in the cooking appliance or transforms into a different shape or into a smaller icon. In one embodiment, an additional animation is added besides moving the ingredient to the appliance, such as a sizzling on the grill, a fire spark, an overflow of water on a pot, etc., which represents the impact of the ingredient reaching the appliance.

After the first ingredient is added to the dish, the second ingredient is made available, and FIG. 2C shows how the second ingredient (the mushrooms) follow a trajectory from the initial point to the grill after the user selects the second ingredient.

After all the ingredients are added, the finishing touch is the last action required from the user to start cooking. Once the user selects the finishing touch, an animation shows that the finishing touch is being added to the appliance. In one embodiment, the animation includes throwing spices on the grill which causes a flare of the fire in the grill, but other animations are also possible.

The reverse doober effect reinforces the game notion that the player is cooking by showing the addition of ingredients to the pot, similar to what a cook does when the cook adds ingredients to a pot in real life.

FIG. 2E illustrates an example of a user interface to notify the user that the cooking of the dish is complete. In one embodiment, once the user selects the disk on the appliance, the dish is moved to a serving tray or area, where a waiter is able to take the dishes from the serving area to customers of the restaurant.

It is noted that the embodiments illustrated in FIGS. 1A-1C and 2A-2D are exemplary. Other embodiments may utilize different layouts, different animations, different order of preparation, etc. The embodiments illustrated in FIGS. 1A-1C and 2A-2D should therefore not be interpreted to be exclusive or limiting, but rather exemplary or illustrative.

FIG. 3 is a flowchart of a method for preparing a dish for cooking, in accordance with one embodiment. After the user selects to start cooking 301, the method displays the ingredients around the cooking appliance in operation 302 (see for example FIGS. 1C and 2A). In one embodiment, an icon associated with a finishing touch is also presented to the user around the cooking appliance.

From operation 302, the method flows to operation 304 where the game waits for the selection by the user of an ingredient or the selection of the finishing touch, when available. Once the user selection is detected in operation 304, the method flows to operation 306, where an animation is displayed to add the selected ingredient or the selected finishing touch to the cooking appliance. The animation may include transporting the icon towards the cooking appliance, or some other form of animation, such as melting butter on a cooking appliance, adding olive oil to a frying pan, adding spices to a dish, etc.

In operation 308, a check is made to determine if all the ingredients and the finishing touch have been added to the cooking appliance. If all the ingredients having added, the method flows to operation 310, and if there are still ingredients or the finishing touch left, the method flows back to operation 304 to wait for the user selection of the next ingredient or the finishing touch.

In operation 310, the dish starts cooking, and in one embodiment, the timer is started for the amount of time required for the dish to cook. In operation 312, and expiration of the timer is detected, which indicates that the dish is ready to be served, and in operation 314 the dish is set in a serving tray and made available for serving to restaurant customers.

FIGS. 4A-4D illustrate the use of the “Show Me” feature to get ingredients for a dish, according to one embodiment. In one embodiment, when the user is missing ingredients for a selected dish, the start button is grayed out and unavailable for the user or the start button is missing, because the dish cannot be cooked until all ingredients are available. In the example of FIG. 4A, a Veggie Kebab dish requires two tomatoes and two mushrooms, but the user only has one tomato. A message of “Missing Ingredients!” notifies the user that the user lacks some of the ingredients to make the dish. In one embodiment, the ingredients that are not available to make the dish are grayed out, while ingredients that are available are presented with an indication that they are available, such as a colorful icon, a checkmark, or some other indicator.

FIG. 4B illustrates the display presented to the user when the user selects the missing ingredient. A box associated with the missing ingredient is presented, where the box includes three options: “Show Me,” “Ask Friends,” and visit friend. In one embodiment, a fourth option to buy the ingredient is also present. The “Show Me” option, when selected, shows the user how to get the missing ingredient in the game. “Show me” means “show me” in my own game board, taking the player to the place in the player's board where the ingredient may be obtained.

In one embodiment, the ingredient may be obtained by harvesting the ingredient, such as by growing a tomato plant and picking up the tomato, or by crafting the ingredient in a crafting station (e.g., cooking bread), or by some other game mechanic. In one embodiment, the crafting station is utilized to obtain a crafted ingredient, which in turn requires one or more ingredients to be added during the preparation of the crafted ingredient in the crafting station. In one embodiment, the crafting station is a brick oven and the user may use the brick oven to make bread. In order to make the bread, the user needs to add dough to the oven to make the bread.

In one embodiment, if the player selects the show-me option for an ingredient that needs to be crafted, the game takes the player to the crafting station. For example, a mixer is a crafting station for mixing ingredients. The show-me interface will take the player through all the operations required to obtain the ingredient. If the player does not have the crafting station (e.g., the mixer) the game will take the player to the market or to the expansion area where the crafting station may be obtained. In one embodiment, a quest completion is required to obtain the crafting station, but other ways of getting crafting stations are also possible.

In another embodiment, the box associated with the missing ingredient also includes the option of buying the ingredient (not shown in FIG. 4B). If the player selects the buy option, the player is taken to a purchase interface where the player may buy the ingredient in exchange for game currency or some other asset.

FIG. 4C illustrates the animation presented when the user clicks in the Show Me button. In one exemplary embodiment, the animation includes harvesting a tomato from a tomato plant. Once the user clicks in the tomato plant, an avatar associated with the user goes to the tomato plant and “picks” one or more tomatoes, as seen in FIG. 4D. As a result, the number of tomatoes owned by the player is incremented accordingly. If this is the only ingredient that was missing to cook a dish, the player may now go back to the cooking appliance and select to start cooking the dish.

In another embodiment, the show-me animation includes displaying a building that includes a source for the ingredient. For example, the player may visit a bakery in the player's own game board to collect bread or cheese. Some of the buildings in the board game are a source of ingredients, and some of the buildings are also referred to as expansions, which are described below in more detail with reference to FIGS. 9A-9G. An expansion refers to an area of the game board that is not initially available to the player (e.g., not available to the player's avatar to do work therein). As the player makes progress in the game, the player may gain access to one or more extension areas that expand the area where the avatar may travel. Some of the extension areas include additional sources of ingredients, such as a bakery or a fish market.

FIG. 5 is a flowchart of a method for enabling the user to get ingredients, according to one embodiment. After the player selects 502 an ingredient that is missing for being able to make a dish, the method flows to operation 504 where the different ways for obtaining the missing ingredient are presented to the player. As discussed above, the ways for obtaining the missing ingredient may include one or more of a show-me option, a visit-friend option, and an ask-friend option. In operation 506, the method waits for user selection of one of the options.

In operation 508, the method checks which option was selected, and if the user selected the show-me option the method flows to operation 510, if the user selected the ask-friend option the method flows to operation 512, and if the user selected the visit-friend option the method flows to operation 514.

In operation 510, after selecting the show-me option, the method presents an animation showing how the player may get the ingredient in the game board of the player, such as by harvesting a fruit or a vegetable, fishing in the lake, completing a quest, crafting an ingredient in a crafting station, going to a shop in the game board, going to a building in an expansion area that holds another sources of ingredients, etc.

In operation 512, a request is sent to a friend of the player individual game for the needed ingredient, and in operation 516 the game waits for a response from the friend to receive the ingredient. In operation 514, after the player requests to visit a friend that is known by the game to have the required ingredient, a visit is initiated to the game board of the friend. In one embodiment, a visit to the game board of the friend includes transporting the avatar of the player to the game board of the friend. More details regarding visits to friends are described below with reference to FIGS. 6A-6D.

FIGS. 6A-6D illustrate the operation for visiting a friend in the game to gather ingredients, according to one embodiment. FIG. 6A shows another exemplary embodiment of a dish with missing ingredients. In order to cook a Grilled Steak Panini, in one embodiment, the player needs one piece of meat, two pieces of bread, and two onions. When the player mouse is over the onions, a box shows two options: a show-me option and a visit-friend option. In this case, no friends of the player have onions, so the game does not display any friends that can help the player.

FIG. 6B illustrates the GUI when a player visits a friend. In the embodiment of FIG. 6B, the player is visiting a friend named Madeline. In the information bar at the bottom of the game board, the game provides informational messages that the player is visiting, such as “Madeline's Restaurant” and “Now Visiting Madeline.” A home button is provided to end the visit and take the avatar back to the home game board of the player.

The friend's board is a game board created by the friend in the game, and when the player is visiting the friend, the player may perform operations therein to help a friend, such as serving dishes, harvesting tomatoes, etc. In exchange for helping the friend, the player gets game rewards such as energy, friendship points, ingredients, etc. While visiting the friend, the player's avatar may wander around the friend's board. In the example of FIG. 6B, the player's avatar is sitting at table of the restaurant.

It is noted that, in one embodiment the game provides a fictitious friend to the player so the player may perform viral operations, even if the player does not have any friends in the game yet. In one embodiment, the visit operation to a real friend provides the same features to the player as a visit operation to the fictitious friend, and in another embodiment, the visit to the fictitious friend may have different features.

In one embodiment, while the player is visiting, the operations that the player may perform are highlighted in some fashion, such as by including arrows pointing to the items that may be clicked and operated upon by the player's avatar. If the player places the mouse cursor over a particular item, in one embodiment, the game provides information about the item and the operations to be performed. In the exemplary embodiment of FIG. 6C, the game shows that the player may obtain mushrooms and game currency if the player helps the friend (e.g., Madeline) to serve a dish. If the player selects this option, the dish will be served to some clients in Madeline's restaurant and the player will obtain mushrooms and currency. If the player needed mushrooms to complete a dish, the player may now return back home and cook the dish with the mushrooms.

In one embodiment, another option for getting missing ingredients is through a viral request, which involves asking a friend for the missing ingredient. The viral request is performed inside the game, without sending the request to an external entity outside the game, such as a social network. Once the player selects a friend having the missing ingredient, a request is sent to the friend, which may receive the request in different ways, such as a pop-up message when the friend signs into the game, a message in a message board, the message in a chat, etc. In one embodiment, besides sending a request within the game, a separate notification may be sent to the friend, such as via e-mail, text message, post, or some other form of electronic communication.

In one embodiment, the request is presented to the friend via an avatar in the friend's board game with a message describing the request, such as in the embodiment of FIG. 6D. The avatar presented is the avatar of the requester in the game, and the request may also include a picture of the requester. In one embodiment, the message includes a list of available ingredients that may be given to the requester, a first button to visit the game board of the requester, and a second button to get the friend the requested ingredient or ingredients.

In one embodiment, when the friend gifts and ingredient, the count for that ingredient is decreased accordingly for the giver and increased for the recipient. In another embodiment, the ingredient may be shared, and the count of the giver does not decrease while the count for the recipient does increase.

FIG. 7 illustrates a game bar with a variable number of slots, according to one embodiment. In one embodiment, the GUI has an expandable bar with a variable number of friends, where the number of friends presented depends on one or more factors, such as how many friends the player has in the game, the current screen size where the GUI is being displayed, the game elements being displayed at a certain time (e.g., the presence of a chat window for chatting with other players may decrease the size of the game bar), etc. The exemplary of FIG. 7 includes slots for seven friends while the embodiment of FIG. 6B includes slots for 15 friends because there is more space in the game board for the game bar.

In some embodiments, slots for adding friends (e.g. “Add Friend”) are presented in the expandable game bar, and if the player clicks on the “Add Friend” slot, then a user interface is presented to add a new friend to the game. The interface may include sending an invitation to the friend via intra-game communications or via an external website, such as a social network. In one embodiment, the number of slots for adding friends is limited to one slot, while in other embodiments, the GUI bar may include more than one slot for adding friends.

In one embodiment, the friends displayed in the expandable GUI bar are sorted according to one or more criteria. The criteria includes one or more of a number of mastery stars in the game, level in the game, friends that have been sent a request, friends that have sent a request, number of interactions in the game, number of interactions in a social network, the amount of time that the friend has been a friend in the game, the amount of time that the friend has been a friend in the social network, gender, age, having ingredients that the player needs, etc.

FIG. 8 is a state diagram describing cooking operations in the game, according to one embodiment. The diagram of FIG. 8 includes a plurality of different game states represented by an elliptical figure, and a group of arrows representing transactions between the game states. Some of the arrows include a label that indicates the condition that causes the transition from one game state to another.

In state 802, a game board and is presented, and in one embodiment the game board represents a restaurant or a café where the game takes place. See for example the game board of FIG. 1A. When the user selects a cooking appliance to make a dish, the game transitions to state 804 where an interface for selecting a recipe or dish from the cooking appliance is presented (see for example the embodiments of FIGS. 1B, 4B, 4C, etc.).

While in state 804, if a dish is selected by the user, the game performs a check 824 to determine if all the ingredients are available to cook the selected dish. If all the ingredients are available the game transitions to state 806, and if some of the ingredients are missing the game transitions to state 812.

In state 806, the game presents the ingredients required to make the dish (see for example FIG. 1B), and if the user selects the options to start cooking the game transitions to state 808 to enter the cooking mode. In one embodiment, the ingredients for the selected dish are presented over the cooking appliance, and when and ingredient is selected, the game transitions to state 810 where the ingredient is added to the appliance. In one embodiment, adding the ingredients to the appliance includes an animation for bringing the ingredient to the appliance, or to some cooking container about the appliance (see for example FIGS. 2A-2D). In one embodiment, a finishing touch is also added to the list of ingredients, and selecting the finishing touch also creates an animation to complete the preparation of the dish.

After the ingredient is added to the appliance, a check 822 is made to determine if the last ingredient has been added (or the finishing touch in some embodiments), and if the last ingredient has not been added, the game returns to state 808. If all the ingredients have been added to the dish (and the finishing touch when available) the game transitions to a state 824 where the dish starts cooking, and a timer is set for the duration of the dish cooking time. Afterwards, the game program goes back to state 802, which is the basic display for the game that includes a view of the player's restaurant.

Returning now to check 824, if at least one ingredient is missing to cook the dish, the game transitions to state 812 where the ingredients are presented to the player, indicating which ingredients are available and which ones are missing. In addition, the GUI provides options to the player indicating how the player may obtain a missing ingredient. If the player selects the show-me option, the game transitions to state 816 where the player is shown how to obtain a missing ingredient in her own game board (e.g., her own restaurant, see for example FIGS. 4C-4E). After the player has been shown the way to obtain the missing ingredient, the game returns to state 812, where the user has the option (not shown) to go back to the main board in state 802 and proceed to obtain the missing ingredient.

If the player selects the option to ask a friend, a request is sent to the friend in state 818. In one embodiment, the request is an intra-game request that does not require access to the social network. The intra-game request is presented in the game board of the friend who is being asked for the missing ingredient. After the request is sent, the game returns to state 812.

If the player selects to visit a friend, the game transitions to state 820 where a visit to the friend's game board (e.g., the friend's restaurant) is started. While visiting the friend, the player is able to perform game operations in the friend's board to gather the missing ingredient.

It should be noted that different ingredients may have different ways of being gathered, and not all options are available for all ingredients. For example, one ingredient may be available only by visiting a friend, while other ingredient may only be available via a friend request, etc.

It is further noted that the embodiments illustrated in FIG. 8 are exemplary. Other embodiments may utilize different states, combine two or more states into one, or break one state into two or more sub-states. The embodiments illustrated in FIG. 8 should therefore not be interpreted to be exclusive or limiting, but rather exemplary or illustrative.

FIGS. 9A-9G illustrate an interface for adding an expansion to the game, according to one embodiment. In one embodiment, the game offers the player the possibility of expanding the game board by adding additional ingredient sources. The additional ingredient sources are associated with an expansion of the game, where the expansion includes adding access to an area in the game board, and the expansion includes a building or some other game feature that allows the player to collect ingredients when visiting the expansion area.

FIG. 9A is an exemplary tutorial for teaching the player how to add a new ingredient source. An NPC character presents a message to the player to ask the player to start the process for learning how to add an ingredient source. If the player selects the okay button to start the tutorial, the player is presented a way to add an expansion, as shown in the exemplary embodiment of FIG. 9B. If the player clicks on the “Show Me” button, an animation is presented showing the area of the game board where the expansion is located, in this example the Mom 'n Pop Shop area.

In one embodiment, expansion areas that are available to the player but that have not yet been acquired or obtained in the game are shown as “gloom” areas, which means that the expansions are grayed out or dimmed. If the player moves the mouse cursor over the grayed expansion areas, the game displays what are the ingredients that might be obtained in the selected expansion area (e.g., cheese).

There are different types of expansion areas, such as harvestable areas to collect fruits and vegetables (e.g., tomatoes, mushrooms, etc.), food making areas (e.g. a dairy to get cheese), food shops (e.g., bakery), markets to get staples and other items (e.g., sugar, salt), etc.

FIG. 9C illustrates the grayed out Mom 'n Pop Shop area. If the user selects the option to expand, such as by clicking on the expansion area, a dialogue is presented (see FIG. 9D) to the user showing the items required to get the expansion area. If the player meets all the necessary requirements, an option button is presented (e.g., “Unlock”) to obtain the expansion.

If the player does not have all the requirements the button to obtain the expansion is not available, as shown FIG. 9E. The exemplary embodiment of FIG. 9E is for getting an expansion of a Farmer's Market, which requires 5000 points, eight recommendations, and 16 Mastery Stars.

FIG. 9F illustrates the Mom 'n Pop shop after completing the expansion operation. Now, the expansion is not grayed out nor dimmed any more, which means that the expansion is available to the player for performing game operations (e.g., obtaining ingredients for dishes). FIG. 9G illustrate a game board after the player has obtained several expansions. Since the expansions are not grayed out anymore, the player is able to visit the different expansions to collect ingredients or some other game assets.

FIG. 10 illustrates the interaction between client and server in an online game, according to one embodiment. In one embodiment, the online game is hosted by server 154, which includes game manager 160, cooking manager 162, extension manager 164, social manager 166, and game data 192. A player P₁ 156 plays the game utilizing client device 152 executing a computer program. In one embodiment, the client 152 utilizes a web browser 158, and in another embodiment other computer programs may also be utilized to play the game, such as a computer program loaded on a computing device for the exclusive purpose of playing the game.

In one embodiment, game manager 160 manages the game operations for each of the players, and game manager 160 interacts with other modules to perform respective game operations within the game. In addition, the game manager 160 manages the game data stored for running the player's games, although other modules may also access and change some of the game data. In one embodiment, the functionality implemented by game manager 160 includes presenting the game board to the player (e.g., view of the restaurant), presenting options to the player for customizing and controlling an avatar of the game, being the interface to the player with other game modules, synchronizing game operations with client 152, managing communications with client 152, etc.

Cooking manager 162 manages the cooking operations in the game. In one embodiment, when the player selects a cooking appliance to perform a cooking operation, the cooking manager 162 is invoked by game manager 160. In one exemplary embodiment, the cooking manager presents cooking appliance for cooking dishes, such as the one shown in FIG. 1A.

Expansion manager 164 manages the expansion modules within the game (e.g., expansions within the restaurant). When the player selects an expansion, game manager 164 provides an interface to add expansions to the game board. For example, the game manager may display the requirements to obtain the expansion or the type of ingredients that may be obtained from the expansion.

The social manager 166 manages the social interactions of the players, which include determining the social links established within the game and outside the game among the players. For example, the social manager 166 may suggest friends in the social network to the player that may become friends within the game.

Game data 192 represents one or more databases that hold game related data. The game data includes player data 168, ingredients 170 available for making dishes, recipes 172 for the dishes that can be cooked in the restaurant, and social data 174 obtained by social manager 166. The social data 174 includes the relationships established by players in the game within the game, and the relationships existing among the players in one or more social websites.

Game data 192 further includes cooking stations data 176, which define the features, capabilities, dishes that can be cooked, cost, and other data associated with the cooking stations (e.g., a grill). Crafting stations are similar to cooking stations in that they both take ingredients to be processed, but the crafting station produces a new processed ingredient, instead of a finished dish like the cooking station.

Expansions data 180 stores the information about possible expansions in the game, and quests data 182 includes different missions that can be started by the player in order to obtain rewards and make progress in the game. Further yet, game data 192 includes information regarding visits 184 to follow players in the game, inventory 186, communications between player 188, crews 190, etc.

It is noted that the embodiments illustrated in FIG. 10 are exemplary. Other embodiments may utilize different game modules, different data modules, or combine the functionality of one or more modules into a single module. The embodiments illustrated in FIG. 10 should therefore not be interpreted to be exclusive or limiting, but rather exemplary or illustrative.

FIG. 11 illustrates an implementation of an online game infrastructure, according to one embodiment. The online game infrastructure 476 includes one or more game servers 458, web servers (not shown), one or more social network management servers 462, and databases to store game related information. In one embodiment, game server 458 provides a user interface 460 for players 452 to play the online game. In one embodiment, game server 458 includes a Web server for players 452 to access the game via web browser 454, but the Web server may also be hosted in a server different from game server 458. Network 456 interconnects players 452 with the one or more game servers 458.

Each game server 458 has access to one or more game databases 466 for keeping game data. In addition, a single database can store game data for one or more online games. Each game server 458 may also include one or more levels of caching. Game data cache 464 is a game data cache for the game data stored in game databases 466. For increased performance, caching may be performed in several levels of caching. For instance, data more frequently used is stored in a high priority cache, while data requiring less access during a session will be cached and updated less frequently.

The number of game servers 458 changes over time, as the gaming platform is an extensible platform that changes the number of game servers according to the load on the gaming infrastructure. As a result, the number of game servers will be higher during peak playing times, and the number of game servers will be lower during off-peak hours. In one embodiment, the increase or decrease of bandwidth is executed automatically, based on current line usage or based on historical data.

One or more social network management servers 462 provide support for the social features incorporated into the online games. The social network management servers 462 access social data 478 from one or more social networks 474 via Application Programming Interfaces (API) 472 made available by the social network providers. An example of a social network is Facebook, but it is possible to have other embodiments implemented in other social networks. Each social network 474 includes social data 478, and this social data 478, or a fraction of the social data, is made available via API 472. As in the case of the game servers, the number of social network management servers 462 that are active at a point in time changes according to the load on the infrastructure. As the demand for social data increases, the number of social network management servers 462 increases. Social network management servers 462 cache user data in database 468, and social data in database 470. The social data may include the social networks where a player is present, the social relationships for the player, the frequency of interaction of the player with the social network and with other players, etc. Additionally, the user data kept in database 468 may include the player's name, demographics, e-mail, games played, frequency of access to the game infrastructure, etc.

It is noted that the embodiment illustrated in FIG. 11 is an exemplary online gaming infrastructure. Other embodiments may utilize different types of servers, databases, APIs, etc., and the functionality of several servers can be provided by a single server, or the functionality can be spread across a plurality of distributed servers. The embodiment illustrated in FIG. 11 should therefore not be interpreted to be exclusive or limiting, but rather exemplary or illustrative.

FIG. 12 illustrates an example network environment 550 suitable for implementing embodiments. Network environment 550 includes a network 560 coupling one or more servers 570 and one or more clients 580 to each other. In particular embodiments, network 560 is an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a metropolitan area network (MAN), a portion of the Internet, another network, or a combination of two or more such networks 560.

One or more links 552 couple a server 570 or a client 580 to network 560. In particular embodiments, one or more links 552 each includes one or more wired, wireless, or optical links 552. In particular embodiments, one or more links 552 each includes an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, or another link 552 or a combination of two or more such links 552.

Each server 570 may be a stand-alone server or may be a distributed server spanning multiple computers or multiple datacenters. Servers 570 may be of various types, such as, for example and without limitation, cooking server, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, or proxy server. Each server 570 may include hardware, software, embedded logic components, or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server 570. For example, a web server is generally capable of hosting websites containing web pages or particular elements of web pages. More specifically, a web server may host HyperText Markup Language (HTML) files or other file types, or may dynamically create or constitute files upon a request, and communicate them to clients 580 in response to Hypertext Transfer Protocol (HTTP) or other requests from clients 580. A mail server is generally capable of providing electronic mail services to various clients 580. A database server is generally capable of providing an interface for managing data stored in one or more data stores.

In particular embodiments, one or more data storages 590 may be communicatively linked to one or more severs 570 via one or more links 552. Data storages 590 may be used to store various types of information. The information stored in data storages 590 may be organized according to specific data structures. In particular embodiments, each data storage 590 may be a relational database. Particular embodiments may provide interfaces that enable servers 570 or clients 580 to manage, e.g., retrieve, modify, add, or delete, the information stored in data storage 590.

In particular embodiments, each client 580 may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client 580. For example and without limitation, a client 580 may be a desktop computer system, a notebook computer system, a notebook computer system, a handheld electronic device, or a mobile telephone. A client 580 may enable a network player at client 580 to access network 580. A client 580 may enable its player to communicate with other players at other clients 580. Further, each client 580 may be a computing device, such as a desktop computer or a work station, or a mobile device, such as a notebook computer, a network computer, or a smart telephone.

In particular embodiments, a client 580 may have a web browser 582, such as Microsoft Internet Explorer, Google Chrome, Or Mozilla Firefox, and may have one or more add-ons, plug-ins, or other extensions. A player at client 580 may enter a Uniform Resource Locator (URL) or other address directing the web browser 582 to a server 570, and the web browser 582 may generate a Hyper Text Transfer Protocol (HTTP) request and communicate the HTTP request to server 570. Server 570 may accept the HTTP request and communicate to client 580 one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client 580 may render a web page based on the HTML files from server 570 for presentation to the user. The present disclosure contemplates any suitable web page files. As an example and not by way of limitation, web pages may render from HTML files, Extensible Hyper Text Markup Language (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in Javascript, Java, Microsoft Silverlight, combinations of markup language and scripts such as AJAX (Asynchronous Javascript and XML), and the like. Herein, reference to a web page encompasses one or more corresponding web page files (which a browser may use to render the web page) and vice versa, where appropriate.

Web browser 582 may be adapted for the type of client 580 where the web browser executes. For example, a web browser residing on a desktop computer may differ (e.g., in functionalities) from a web browser residing on a mobile device. A user of a social networking system may access the website via web browser 582.

FIG. 13 illustrates an example computer system 650 for implementing embodiments. In particular embodiments, software running on one or more computer systems 650 performs one or more operations of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Although methods for implementing embodiments were described with a particular sequence of operations, it is noted that the method operations may be performed in different order, or the timing for the execution of operations may be adjusted, or the operations may be performed in a distributed system by several entities, as long as the processing of the operations are performed in the desired way.

As example and not by way of limitation, computer system 650 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, computer system 650 may include one or more computer systems 650; be stand-alone or distributed; span multiple locations; span multiple machines; or reside in a cloud, which may include one or more cloud components in one or more networks. The one or more computer systems 650 may perform in real time or in batch mode one or more operations of one or more methods described or illustrated herein.

In particular embodiments, computer system 650 includes a processor 652, memory 654, storage 656, an input/output (I/O) interface 658, a communication interface 660, and a bus 662. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, embodiments may be implemented with any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 652 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 652 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 654, or storage 656; decode and execute them; and then write one or more results to an internal register, an internal cache, memory 654, or storage 656. The present disclosure contemplates processor 652 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 652 may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors 652. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular embodiments, memory 654 includes main memory for storing instructions for processor 652 to execute, or data that can be manipulated by processor 652. As an example and not by way of limitation, computer system 650 may load instructions from storage 656 or another source (such as, for example, another computer system 650) to memory 654. Processor 652 may then load the instructions from memory 654 to an internal register or internal cache. During or after execution of the instructions, processor 652 may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor 652 may then write one or more of those results to memory 654. One or more memory buses (which may each include an address bus and a data bus) may couple processor 652 to memory 654. Bus 662 may include one or more memory buses, as described below. One or more memory management units (MMUs) reside between processor 652 and memory 654 and facilitate accesses to memory 654 requested by processor 652. Memory 654 includes random access memory (RAM).

As an example and not by way of limitation, storage 656 may include a Hard Disk Drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage 656 may include removable or non-removable (or fixed) media, where appropriate. In particular embodiments, storage 656 includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these.

In particular embodiments, I/O interface 658 includes hardware, software, or both providing one or more interfaces for communication between computer system 650 and one or more I/O devices. One or more of these I/O devices may enable communication between a person and computer system 650. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these.

Communication interface 660 includes hardware, software, or both providing one or more interfaces for communication between computer system 650 and one or more other computer systems 650 on one or more networks. As an example and not by way of limitation, communication interface 660 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. As an example, computer system 650 may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these.

In particular embodiments, bus 662 includes hardware, software, or both coupling components of computer system 650 to each other. As an example and not by way of limitation, bus 662 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCI-X) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus 662 may include one or more buses 662, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.

Herein, reference to a computer-readable storage medium encompasses one or more non-transitory, tangible computer-readable storage media possessing structure that may store a computer program or data. As an example and not by way of limitation, a computer-readable storage medium may include a semiconductor-based or other integrated circuit (IC) (such, as for example, a field-programmable gate array (FPGA) or an application-specific IC (ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an optical disc, an optical disc drive (ODD), a magneto-optical disc, a magneto-optical drive, a floppy disk, a floppy disk drive (FDD), magnetic tape, a holographic storage medium, a solid-state drive (SSD), a RAM-drive, a Secure Digital card, a Secure Digital drive, or another suitable computer-readable storage medium or a combination of two or more of these, where appropriate. Herein, reference to a computer-readable storage medium excludes any medium that is not eligible for patent protection under 35 U.S.C. §101.

One or more embodiments can also be fabricated as computer readable code on a non-transitory computer readable medium. Herein, reference to software may encompass one or more applications, bytecode, one or more computer programs, one or more executables, one or more instructions, logic, machine code, one or more scripts, or source code, and vice versa, where appropriate.

The present disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend. 

What is claimed is:
 1. A method for executing a game, the method comprising: detecting selection of a cooking operation to create a dish with an appliance; presenting ingredients for the dish outside the appliance; for each ingredient: waiting for a user to select the each ingredient; and after the selection, displaying an animation to move the selected ingredient to the appliance, wherein displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance; and start cooking the dish after all ingredients are moved to the appliance, wherein operations of the method are executed by a processor.
 2. The method as recited in claim 1, wherein transforming the presentation of the selected ingredient further includes: changing a shape of the ingredient.
 3. The method as recited in claim 1, wherein transforming the presentation of the selected ingredient further includes: changing a size of the ingredient.
 4. The method as recited in claim 1, wherein transforming the presentation of the selected ingredient further includes: having the ingredient disappear as the ingredient enters a pot in the appliance.
 5. The method as recited in claim 1, wherein displaying the animation further includes: a sizzling on a grill.
 6. The method as recited in claim 1, wherein displaying the animation further includes: a fire spark.
 7. The method as recited in claim 1, wherein displaying the animation further includes: an overflow of water on a pot as the ingredient falls into the pot.
 8. The method as recited in claim 1, wherein displaying the animation further includes: melting butter on the appliance.
 9. The method as recited in claim 1, wherein displaying the animation further includes: adding olive oil to a frying pan.
 10. The method as recited in claim 1, wherein displaying the animation further includes: adding spices to a dish.
 11. A computer program embedded in a non-transitory computer-readable storage medium, when executed by one or more processors, for executing a game, the computer program comprising: program instructions for detecting selection of a cooking operation to create a dish with an appliance; program instructions for presenting ingredients for the dish outside the appliance; program instructions for processing each ingredient including: waiting for a user to select the each ingredient; and after the selection, displaying an animation to move the selected ingredient to the appliance, wherein displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance; and program instructions for start cooking the dish after all ingredients are moved to the appliance.
 12. The computer program as recited in claim 11, wherein presenting the ingredients further includes: presenting two numbers next to the ingredient indicating how many units of the ingredient the user owns and how many units of the ingredient are needed for the dish.
 13. The computer program as recited in claim 11, wherein presenting the ingredients further includes: presenting a preparation time for the dish; and presenting rewards to be obtained when did this is completed.
 14. The computer program as recited in claim 11, further including: placing the dish in a serving tray after the dish is completed.
 15. The computer program as recited in claim 11, wherein detecting the selection includes detecting one or more of a mouse click or a mouse over a graphical option to select cooking the dish.
 16. The computer program as recited in claim 11, wherein transforming the presentation of the selected ingredient further includes: one or more of changing a shape of the ingredient, changing a size of the ingredient, or having the ingredient disappear as the ingredient enters a pot in the appliance.
 17. The computer program as recited in claim 11, wherein displaying the animation further includes: one or more of a sizzling on a grill, a fire spark, an overflow of water on a pot as the ingredient falls into the pot, or melting butter on the appliance.
 18. A method for executing a game, the method comprising: detecting selection of a cooking operation to create a dish with an appliance; presenting ingredients for the dish outside the appliance and a finishing touch; for each ingredient: waiting for a user to select the each ingredient; and after the selection, displaying an animation to move the selected ingredient to the appliance, wherein displaying the animation includes moving the selected ingredient towards the appliance and transforming the presentation of the selected ingredient when the selected ingredient reaches the appliance, wherein the finishing touch is not available for selection until all ingredients have been selected; enabling the selection of the finishing touch after all ingredients have been selected; displaying an animation to add the finishing touch to the appliance in response to a selection of the finishing touch by the user; and start cooking the dish after adding the finishing touch, wherein operations of the method are executed by a processor.
 19. The method as recited in claim 18, wherein displaying the animation to add the finishing touch further includes: throwing spices on a grill which causes a flare of fire in the grill.
 20. The method as recited in claim 18, wherein operations of the method are performed by a computer program when executed by one or more processors, the computer program being embedded in a non-transitory computer-readable storage medium. 